import { defineConfig, loadEnv } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import cesium from 'vite-plugin-cesium'

export default defineConfig(({ mode }) => {
  // 加载当前模式下的环境变量
  const env = loadEnv(mode, process.cwd(), '')

  // 获取基础 API 路径、后端地址、是否开启代理
  const baseApi = env.VITE_APP_BASE_API || '/api'
  const baseUrl = env.VITE_APP_BASE_URL || 'http://localhost:3000'
  const openProxy = env.VITE_OPEN_PROXY == 'true'

  // 动态生成 proxy 配置（只有开启代理才添加）
  const proxy = openProxy
    ? {
      [baseApi]: {
        target: baseUrl,
        changeOrigin: true,
        rewrite: (path) => path.replace(new RegExp(`^${baseApi}`), ''),
      },
    }
    : undefined

  return {
    base: env.VITE_APP_ROOT_BASE || '/',
    plugins: [
      vue(),
      Components({
        dts: false,
        dirs: ['src/components'],
      }),
      cesium(),
    ],
    resolve: {
      alias: {
        '@': '/src',
      },
    },
    server: {
      host: '0.0.0.0',
      port: 8081,
      open: true,
      proxy: proxy, // 条件性地应用代理
    },
  }
})